# 语法格式： 列表名[索引]
# 注意事项：
# 结果返回的是索引（也叫下标）对应列表元素，索引默认从0开始
# 如果查询的索引不存在，则代码会报错
# 列表元素查询
# 定义列表
name_list = ['张三', '李四', '王五']
# 按照索引查元素
# 查询李四
print(name_list[0])  # 张三
print(name_list[1])  # 李四
# 查询不存在的索引
# print(name_list[4])
# 总结：如果查询的下标（索引）不存在，则代码报错【索引超出了范围】
# IndexError: list index out of range
# 根据元素查索引
print(name_list.index("王五"))  # 下标是2

print("-------列表元素统计--------")
# 语法格式： 列表名.count(元素)
# 定义列表
data_list = ['python', 'java', 'python', 'php']
# 统计python出现的次数
num = data_list.count("python")
print(num)  # 次数：2
# 统计java出现次数
print(data_list.count("java"))  # 次数：1
print(data_list.count("C++"))  # 次数：0
print("-------列表元素增加-------")
# 语法格式： 列表名.append(元素)
# 定义列表
val_list = ["Web自动化", "UI自动化", "接口自动化", "APP自动化"]
# 添加元素（末尾添加：APP自动化）
# 查看原来列表
print(val_list)
# 增加数字元素
val_list.append(11)
print(val_list)
print("-------指定元素位置增加-------")
# 指定位置增加元素 列表名.insert(下标,元素)
# 定义列表
val_list = ["Web自动化", "UI自动化", "接口自动化"]
# 添加元素到第二个位置（APP自动化）
val_list.insert(1, "APP自动化")
# 查看原有列表
print(val_list)  # ['Web自动化', 'APP自动化', 'UI自动化', '接口自动化']
# 在上述列表的第7个位置添加元素“java”
val_list.insert(6, "java")
print(val_list)  # ['Web自动化', 'APP自动化', 'UI自动化', '接口自动化', 'java']
print("-------列表的合并-------")
# 语法格式1： 列表名1.extend(列表名2)
# 语法格式2： 列表1 + 列表2
# 定义列表
info1 = [1, 2, 3]
info2 = [4, 5, 6]
# 合并
info1.extend(info2)
# 查看原来列表1
print(info1)  # [1, 2, 3, 4, 5, 6]
print(info2)  # [4, 5, 6]
print("-------列表的删除-------")
# 列表名.pop(索引)
# 定义列表
val_list = ['Web自动化', 'APP自动化', 'UI自动化', '接口自动化', 'java']
# 删除下标为2对应元素
val_list.pop(2)
# 查看原有列表
print(val_list)
# 下标为空删除
val_list.pop()
print(val_list)
# 删除下标为7的元素
# val_list.pop(7) # IndexError: pop index out of range  #下标不存在报错
# print(val_list)
print("-------列表元素修改-------")
# 列表名[索引]=新数据
# 对列表元素从大到小排序，需要修改reverse=True
# 案例演示
# 定义列表
val_list = ["Web自动化", "UI自动化", "接口自动化", "APP自动化"]
# 把UI自动化修改为性能自动化
val_list[1] = "性能自动化"
# 查看原有列表
print(val_list)
# 指定下标为5的数据修改为：python
# val_list[5] = "python" # IndexError: list assignment index out of range
print("-------列表元素反转-------")
# 列表名.reverse()
info = [8, 100, 30, 10, 40, 2]
# 反转
info.reverse()
# 查看原有列表
print(info)  # [2, 40, 10, 30, 100, 8]
print("-------列表元素排序：大小排列-------")
# 列表名.sort(reverse=False)
# 定义列表
info = [8, 100, 30, 10, 40, 2]
# 从小到大排序
info.sort()
info.sort(reverse=False)
# 查看原有列表
print(info)
# 从大到小排序
info.sort(reverse=True)
print(info)
print("-------列表的嵌套元素获取：列表中的元素还是列表-------")
# 定义列表
# 列表中的元素还是列表：列表嵌套
student_list = [["张三", "18", "功能测试"], ["李四", "20", "自动化测试"], ["王五", "22",
                                                              ["python", "java"]]]
# 获取指定的元素
# 查找元素18，如何查找？
print(student_list[0])
aa = student_list[0]  # ['张三', '18', '功能测试']
print(aa[1])  # 18
# 合并起来
print(student_list[0][1])  # 18
# 查找李四
print(student_list[1][0])  # 李四
# 查找java
print(student_list[2][2][1])  # java
